package VacationHomework.LeetCode;

public class Num202 {
    public boolean isHappy(int n) {
       int slow=n;
       int fast=getNext(n);
       //int类型最大值为2,147,483,648,所以平方和最大的数是1 999 999 999
        // 平方和为1 + 81*9 = 724。任何数的平方和都在1到724之间，724次循环之内一定有重复的。所以不会死循环
       while (slow!=fast){
           slow=getNext(slow);
           fast=getNext(getNext(fast));
       }
       return slow==1;

    }

    private int  getNext(int n) {
        int sum=0;
        while (n!=0){
            int a=n%10;
            sum+=a*a;
            n=n/10;
        }
        return sum;
    }
}
